Package-level declarations
Types
A configured catch-all destination: a block position given as world;x;y;z in config.yml. Admin-owned and config-driven by design — catch-alls exist to absorb contraband and voided items, which is an operator concern, not a player one. Keeping them in config (rather than as flagged io.fairyfox.papermc.despawneditems.location.DespawnLocations) also means no storage-schema migration and no way for a player to register one.
Command names and aliases, read from the commands: section so /despi and /recycle can be renamed if they clash with another plugin. Names are validated (sanitize); invalid entries fall back to the default with a console warning. Commands register once at startup, so changes need a server restart (not just /despi reload).
Top-level configuration holder. Owns the effect settings (fileConfig) and the storage settings (storage). Despawn locations themselves live in the plugin's io.fairyfox.papermc.despawneditems.location.LocationManager, not here. Call load to re-read config.yml from disk and rebuild both.
The main config.yml — particle and sound settings for the effect played when an item lands in a despawn container.
Per-user despawn-location limits, read from the limits: section. The default cap applies unless a player has a despi.limit.<n> permission (highest wins) or despi.limit.bypass. See io.fairyfox.papermc.despawneditems.limit.DespawnLimits.
Pure resolution of a configured particle into a Particle plus any extra data it needs — extracted from FileConfig so it can be unit-tested without a server.
Large-server safety limits for the automatic despawn-relocation pipeline, read from the performance: section. These bound how much relocation work happens per tick so a flood of despawning items can never storm the server.
Storage backend selection and connection details, read from the storage: section of config.yml. Consumed by io.fairyfox.papermc.despawneditems.location.StorageFactory.
The targets: section — whether this server will talk to a client-side mod.
Per-user throttling of the despawn pipeline, read from the throttle: section.
Which per-user throttling policies are active. Selected by throttle.strategy.
The void: section — a configurable chance that an item is voided rather than relocated, an admin-extensible banned-material list, and one or more catch-all destinations that receive banned and voided items instead of destroying them.